Linux控制台输出多种样式彩色字符及原理解析 | 您所在的位置:网站首页 › linux 颜色输出 › Linux控制台输出多种样式彩色字符及原理解析 |
1. 前言
之前在做MIT6.824的实验的时候,有助教资料在说明如何输出彩色的字符来让日志更加清晰。所以对Linux控制台如何输出彩色字符以及它的原理产生了兴趣,学习了之后在这里记录一下。 2. 原理Linux控制台输出彩色字符的原理是通过ANSI转义码来实现的。ANSI转义码是一种控制字符,用于控制文本终端的行为。包括但不限于控制光标位置、颜色、清屏等。 下面这是一段输出蓝色字符的控制台代码: echo -e "\033[34mHello\033[0m"在vscode的终端显示结果如下: 下面对这段代码逐个进行解析: -e:表示开启转义字符的解析,如果不加这个参数,\033会被当做普通字符输出。\033:表示转义字符的开始。在ASCII字符集中,十进制的33代表了Escape字符(也可以写为\033或\x1B),它通常用于表示控制序列的开始。[34m:表示设置颜色。34代表蓝色,m表示设置颜色的转义序列的结束。[0m:表示重置为默认设置。0代表默认设置,m表示设置颜色的转义序列的结束。如果不设置为默认设置,后续的字符都会被设置为蓝色。 3. 转义代码主要与输出字符格式相关的转义代码的格式如下,可以单独使用也可以利用;来混合使用: \033[显示方式;前景色;背景色m下面是一些常用的转义代码: 1. 显示方式代码及对应显示方式如下: 0:所有属性关闭,恢复到默认值。1:粗体或者高亮。2:弱化(低亮)。(不是所有终端都支持)3:斜体。(不是所有终端都支持)4:下划线。5,6:闪烁。(不是所有终端都支持)7:反显,即前景色和背景色交换。8:隐藏字符。9:删除线。(不是所有终端都支持)10:将文本的前景色设置为默认颜色。21:双下划线。(不是所有终端都支持)在vscode的终端显示结果如下: 2. 前景色代码及对应颜色如下: 30:黑色。31:红色。32:绿色。33:黄色。34:蓝色。35:洋红。36:青色。37:白色。在vscode的终端显示结果如下(注意37号白色被终端自动修改了以能够显示清楚): 而38号前景色是用于设置前景色的其他模式,包括两种: 使用 ANSI 256 色模式设置前景色,例如:\033[38;5;196m。这里的5表示使用 ANSI 256 色模式,196表示使用ANSI 256 色模式中的第 196 种颜色使用 TrueColor 模式设置前景色,例如:\033[38;2;255;0;0m。这里的2表示使用 TrueColor 模式,255;0;0表示RGB颜色值39号表示重置前景色为默认颜色。 3. 背景色代码及对应颜色如下: 40:黑色。41:红色。42:绿色。43:黄色。44:蓝色。45:洋红。46:青色。47:白色。在vscode的终端显示结果如下(注意47号白色被终端自动修改了以能够显示清楚): 同样的,48号背景色是用于设置背景色的其他模式,包括使用 ANSI 256 色模式设置背景色和使用 TrueColor 模式设置背景色。 49号表示重置背景色为默认颜色。 4. 其他还有一些其他比较有意思的转义代码,不过格式就不是\033[显示方式;前景色;背景色m了,如下: \033[n*A :光标上移n行\033[nB:光标下移n行\033[nC:光标右移n行\033[nD:光标左移n行\033[y;xH :设置光标位置\033[2J :清屏\033[K:清除从光标到行尾的内容\033[s:保存光标位置\033[u:恢复光标位置\033[?25l:隐藏光标\033[?25h:显示光标 参考资料 Linux 命令行输出不同颜色的文本Adding colors to your motd? |
CopyRight 2018-2019 实验室设备网 版权所有 |